package findOrder;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;

public class Solution {
//    public int[] findOrder(int numCourses, int[][] prerequisites) {
//        List<Integer>[] graph = new List[numCourses];
//        for (int i = 0; i < numCourses; i++) {
//            graph[i] = new ArrayList<>();
//        }
//        for (int i = 0; i < prerequisites.length; i++) {
//            graph[prerequisites[i][1]].add(prerequisites[i][0]);
//        }
//        int[] indegree = new int[numCourses]; // 入度
//        for (int i = 0; i < numCourses; i++) {
//            for (int j = 0; j < graph[i].size(); j++) {
//                indegree[graph[i].get(j)]++;
//            }
//        }
//
//        Stack<Integer> stack = new Stack<>();
//        for (int i = 0; i < indegree.length; i++) {
//            if(indegree[i] == 0) stack.push(i);
//        }
//        int[] ans = new int[numCourses];
//        int p = numCourses-1;
//        while (!stack.isEmpty()) {
//            // 删除入度为0的点和它的弧
//            int t = stack.pop();
//            for (int i = 0; i < graph[t].size(); i++) {
//                indegree[graph[t].get(i)]--;
//                if(indegree[graph[t].get(i)] == 0) stack.push(graph[t].get(i));
//                ans[p--] = t;
//            }
//        }
//        if(p != -1) return new int[]{};
//        return ans;
//    }
}
